package cn.laike.modules.dev.utils;

import java.io.File;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.StringUtils;
import org.springframework.util.ResourceUtils;

import com.google.common.collect.Maps;

import cn.laike.common.utils.DateUtils;
import cn.laike.common.utils.HttpRequest;
import cn.laike.common.utils.R;
import cn.laike.modules.dev.entity.ConfigEntity;
import net.sf.json.JSONObject;

public class DevUtils {
	
	/**
	 * 获取微信支付上传路径
	 * @param request
	 * @return
	 */
	public static String getCertificateResourceSavePath(){
		String rootpath = ResourceUtils.class.getClassLoader().getResource("userfiles").getPath() ;
		return rootpath +File.separator + "certificate";
	}
	
	public static String getConfigResourceSavePath(){
		String rootpath = ResourceUtils.class.getClassLoader().getResource("userfiles").getPath() ;
		return rootpath +File.separator + "config";
	}
	
	public static String getBannerResourceSavePath(){
		String rootpath = ResourceUtils.class.getClassLoader().getResource("userfiles").getPath() ;
		return rootpath +File.separator + "banner";
	}
	
	/**
	 * 获取酒店封面图路径
	 * @param request
	 * @return
	 */
	public static String getHotelResourceSavePath(){
		String rootpath = ResourceUtils.class.getClassLoader().getResource("userfiles").getPath() ;
		return rootpath +File.separator + "hotel";
	}
	
	/**
	 * 酒店房型图片路径
	 * @param request
	 * @return
	 */
	public static String getHotelRoomResourceSavePath(){
		String rootpath = ResourceUtils.class.getClassLoader().getResource("userfiles").getPath() ;
		return rootpath +File.separator + "hotelroom";
	}
	
	public static String getHotelRoomBannerResourceSavePath(){
		String rootpath = ResourceUtils.class.getClassLoader().getResource("userfiles").getPath() ;
		return rootpath +File.separator + "hotelroombanner";
	}
	
	public static String getQrcodeResourceSavePath(){
		String rootpath = ResourceUtils.class.getClassLoader().getResource("userfiles").getPath() ;
		return rootpath +File.separator + "qrcode";
	}
	
	/**
	 * 使用登录凭证 code 获取 session_key 和 openid。
	 * @param code 登录凭证
	 * @return
	 */
	public static R wxlogin(Long uid,String code){
		ConfigEntity config = DevCacheUtils.getConfig(uid);
		
		Map result = Maps.newConcurrentMap();
		//小程序唯一标识   (在微信小程序管理后台获取)
		String wxspAppid = config.getAppId();
        //小程序的 app secret (在微信小程序管理后台获取)
		String wxspSecret = config.getAppSecret();
        //授权（必填）
        String grantType = "authorization_code";

        //////////////// 1、向微信服务器 使用登录凭证 code 获取 session_key 和 openid ////////////////
        //请求参数
        String params = "appid=" + wxspAppid + "&secret=" + wxspSecret + "&js_code=" + code + "&grant_type=" + grantType;
        System.out.println(params);
        //发送请求
        String sr = HttpRequest.sendGet("https://api.weixin.qq.com/sns/jscode2session", params);
        System.out.println(sr);
        //解析相应内容（转换成json对象）
        JSONObject json = JSONObject.fromObject(sr);
        //用户的唯一标识（openid）
        if(json.containsKey("openid")){
            System.out.println("openid: " + json.getString("openid")); 
            return R.ok("OK").put("openid", json.getString("openid"));
        }else{
        	return R.error(json.get("errmsg").toString());
        }
	}
	
	public static String getSessionKey(Long uid,String code){
		ConfigEntity config = DevCacheUtils.getConfig(uid);
		
		Map result = Maps.newConcurrentMap();
		//小程序唯一标识   (在微信小程序管理后台获取)
		String wxspAppid = config.getAppId();
        //小程序的 app secret (在微信小程序管理后台获取)
		String wxspSecret = config.getAppSecret();
        //授权（必填）
        String grantType = "authorization_code";

        //////////////// 1、向微信服务器 使用登录凭证 code 获取 session_key 和 openid ////////////////
        //请求参数
        String params = "appid=" + wxspAppid + "&secret=" + wxspSecret + "&js_code=" + code + "&grant_type=" + grantType;
        System.out.println(params);
        //发送请求
        String sr = HttpRequest.sendGet("https://api.weixin.qq.com/sns/jscode2session", params);
        System.out.println(sr);
        //解析相应内容（转换成json对象）
        JSONObject json = JSONObject.fromObject(sr);
        //用户的唯一标识（openid）
        if(json.containsKey("openid")){
            return json.getString("session_key");
        }else{
        	return "";
        }
	}
	
	public static JSONObject sendTemplateMessage(Long uid,String openid,String formId){
		ConfigEntity config = DevCacheUtils.getConfig(uid);
		System.out.println(config.getGiveTemplateId());
		if(config != null && StringUtils.isNotEmpty(config.getGiveTemplateId())){
			System.out.println("赠送早餐券");
			String authorizerAccessToken = MpCacheUtils.getAuthorizerAccessToken(config.getAppId());
			JSONObject param = new JSONObject();
			param.put("touser", openid);
			param.put("template_id", config.getGiveTemplateId());
			param.put("page", "pages/breaCoupon/breaCoupon");
			param.put("form_id", formId);
			param.put("emphasis_keyword", "keyword1.DATA");
			
			
			JSONObject data = new JSONObject();
			
			JSONObject keyword1 = new JSONObject();
			keyword1.put("value", "早餐券");
			data.put("keyword1", keyword1);
			
			JSONObject keyword2 = new JSONObject();
			keyword2.put("value", "您已获取早餐券，请点击查看详情");
			data.put("keyword2", keyword2);
			
			param.put("data", data);
			
			String result = HttpRequest.httpPostWithJSON("https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token="+authorizerAccessToken, param);
			System.out.println(result);
			return JSONObject.fromObject(result);
		}else{
			System.out.println("不赠送早餐券");
			return null;
		}
	}
	
}
